package ListInsertionSorted;

/**
 * Created by sunwei on 2017/10/10
 * Time:15:39
 */
public class SortedList {
    private Link first;

    public SortedList() {
        first = null;
    }
    //将Link数组元素插入到链表里面
    public SortedList(Link[] linkArr){
        first= null;
        for(int i = 0; i <linkArr.length ; i++) {
            insert(linkArr[i]);
        }
    }
    //插入到有序链表中
    public void insert(Link k){
        Link previous = null;//定义一个引用用来指向当前节点的前一个节点
        Link current = first;//一开始默认指向第一个节点
        //循环搜索合适的插入位置
        while (current!=null&&k.dData>current.dData){
            previous = current;
            current = current.next;
        }
        //跳出循环后对这个位置进行分别处理
        if (previous==null) {
              first = k;
        }  else {
            previous.next = k;
        }
        //最后将插入的节点后面指向current位置，为下一个元素的添加做好准备
        k.next = current;
    }

    /*
    移除链表中的元素
     */
    public Link remove(){
        Link temp = first;
        first = first.next;
        return temp;
    }

}
